/**
 * @file config.js
 * @description 配置文件
 */
// /components/config.js

let customSaveHandler = () => {
  // 自定义保存事件
  console.log('custom save handler')
}

var toolbarConfig = {
  undoRedo: true, //撤销重做，注意撤消重做是两个按钮，由这一个配置决定显示还是隐藏
  paintFormat: true, //格式刷
  currencyFormat: true, //货币格式
  percentageFormat: true, //百分比格式
  numberDecrease: true, // '减少小数位数'
  numberIncrease: true, // '增加小数位数
  moreFormats: true, // '更多格式'
  font: true, // '字体'
  fontSize: true, // '字号大小'
  bold: true, // '粗体 (Ctrl+B)'
  italic: true, // '斜体 (Ctrl+I)'
  strikethrough: true, // '删除线 (Alt+Shift+5)'
  underline: true, // '下划线 (Alt+Shift+6)'
  textColor: true, // '文本颜色'
  fillColor: true, // '单元格颜色'
  border: true, // '边框'
  mergeCell: true, // '合并单元格'
  horizontalAlignMode: true, // '水平对齐方式'
  verticalAlignMode: true, // '垂直对齐方式'
  textWrapMode: true, // '换行方式'
  textRotateMode: true, // '文本旋转方式'
  image: true, // '插入图片'
  link: true, // '插入链接'
  chart: true, // '图表'（图标隐藏，但是如果配置了chart插件，右击仍然可以新建图表）
  postil: true, //'批注'
  pivotTable: true,  //'数据透视表'
  function: true, // '公式'
  frozenMode: true, // '冻结方式'
  sortAndFilter: true, // '排序和筛选'
  conditionalFormat: true, // '条件格式'
  dataVerification: true, // '数据验证'
  splitColumn: true, // '分列'
  screenshot: true, // '截图'
  findAndReplace: true, // '查找替换'
  protection: true, // '工作表保护'
  print: true // '打印'
}

// excel配置
export var reOptions = {
  container: 'luckysheet', //luckysheet为容器id
  title: '自定义报表', // 表格名称
  lang: 'zh', // 语言
  showinfobar: false, // 是否显示 infobar
  showtoolbarConfig: {
    ...toolbarConfig
  },
  data: [
    {
      'name': 'sheet1', // 工作表名称
      'color': '', // 工作表颜色
      'index': 0, // 工作表索引
      'status': 1, // 激活状态
      'order': 0, // 工作表的下标
      'hide': 0, // 是否隐藏
      'row': 40, // 行数
      'column': 50, // 列数
      'defaultRowHeight': 19, // 自定义行高
      'defaultColWidth': 73, // 自定义列宽
      'celldata': [], // 初始化使用的单元格数据
      'config': {
        'merge': {}, // 合并单元格
        'rowlen': {}, // 表格行高
        'columnlen': {}, // 表格列宽
        'rowhidden': {}, // 隐藏行
        'colhidden': {}, // 隐藏列
        'borderInfo': {}, // 边框
        'authority': {} // 工作表保护
      }
    },
  ]
}

export function mergeObjects(obj1, obj2, ignoreFields = []) {
  const result = {}

  // Helper function to check if a value is "empty"
  const isEmpty = (value) => {
    return value === null || value === undefined || value === ''
  }

  // Iterate through all properties of both objects
  const keys = new Set([...Object.keys(obj1), ...Object.keys(obj2)])

  keys.forEach((key) => {
    if (ignoreFields.includes(key)) {
      // If the key is in the ignore list, use the value from obj1
      result[key] = obj1[key]
    } else {
      const val1 = obj1[key]
      const val2 = obj2[key]

      if (!isEmpty(val2)) {
        // If obj2's value is not empty, use obj2's value
        result[key] = val2
      } else if (!isEmpty(val1)) {
        // If obj2's value is empty and obj1's value is not, use obj1's value
        result[key] = val1
      } else {
        // Both values are empty, set the result to undefined or leave it empty
        result[key] = undefined
      }
    }
  })

  return result
}
